Added functions gdk_text_height, gdk_string_height, gdk_char_height to
authorStefan Jeske <stefan@gtk.org>
Thu, 25 Jun 1998 09:01:42 +0000 (09:01 +0000)
committerStefan Jeske <stefan@src.gnome.org>
Thu, 25 Jun 1998 09:01:42 +0000 (09:01 +0000)
Thu Jun 25 10:50:34 1998  Stefan Jeske  <stefan@gtk.org>

* gdk/gdk.h gdk/gdkfont.c: Added functions gdk_text_height,
  gdk_string_height, gdk_char_height to retrieve the exact
height of a text.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdk.h
gdk/gdkfont.c
gdk/x11/gdkfont-x11.c

index c0adc681028507126976faa283a9444c505c3cb4..3882fc5a06806701253b97f3804dfaeb4cabd4b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu Jun 25 10:50:34 1998  Stefan Jeske  <stefan@gtk.org>
+
+       * gdk/gdk.h gdk/gdkfont.c: Added functions gdk_text_height,
+       gdk_string_height, gdk_char_height to retrieve the exact
+       height of a text.
+
 Thu Jun 25 07:53:51 BST 1998  Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml: add section on GtkCList widget, contributed
index c0adc681028507126976faa283a9444c505c3cb4..3882fc5a06806701253b97f3804dfaeb4cabd4b7 100644 (file)
@@ -1,3 +1,9 @@
+Thu Jun 25 10:50:34 1998  Stefan Jeske  <stefan@gtk.org>
+
+       * gdk/gdk.h gdk/gdkfont.c: Added functions gdk_text_height,
+       gdk_string_height, gdk_char_height to retrieve the exact
+       height of a text.
+
 Thu Jun 25 07:53:51 BST 1998  Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml: add section on GtkCList widget, contributed
index c0adc681028507126976faa283a9444c505c3cb4..3882fc5a06806701253b97f3804dfaeb4cabd4b7 100644 (file)
@@ -1,3 +1,9 @@
+Thu Jun 25 10:50:34 1998  Stefan Jeske  <stefan@gtk.org>
+
+       * gdk/gdk.h gdk/gdkfont.c: Added functions gdk_text_height,
+       gdk_string_height, gdk_char_height to retrieve the exact
+       height of a text.
+
 Thu Jun 25 07:53:51 BST 1998  Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml: add section on GtkCList widget, contributed
index c0adc681028507126976faa283a9444c505c3cb4..3882fc5a06806701253b97f3804dfaeb4cabd4b7 100644 (file)
@@ -1,3 +1,9 @@
+Thu Jun 25 10:50:34 1998  Stefan Jeske  <stefan@gtk.org>
+
+       * gdk/gdk.h gdk/gdkfont.c: Added functions gdk_text_height,
+       gdk_string_height, gdk_char_height to retrieve the exact
+       height of a text.
+
 Thu Jun 25 07:53:51 BST 1998  Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml: add section on GtkCList widget, contributed
index c0adc681028507126976faa283a9444c505c3cb4..3882fc5a06806701253b97f3804dfaeb4cabd4b7 100644 (file)
@@ -1,3 +1,9 @@
+Thu Jun 25 10:50:34 1998  Stefan Jeske  <stefan@gtk.org>
+
+       * gdk/gdk.h gdk/gdkfont.c: Added functions gdk_text_height,
+       gdk_string_height, gdk_char_height to retrieve the exact
+       height of a text.
+
 Thu Jun 25 07:53:51 BST 1998  Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml: add section on GtkCList widget, contributed
index c0adc681028507126976faa283a9444c505c3cb4..3882fc5a06806701253b97f3804dfaeb4cabd4b7 100644 (file)
@@ -1,3 +1,9 @@
+Thu Jun 25 10:50:34 1998  Stefan Jeske  <stefan@gtk.org>
+
+       * gdk/gdk.h gdk/gdkfont.c: Added functions gdk_text_height,
+       gdk_string_height, gdk_char_height to retrieve the exact
+       height of a text.
+
 Thu Jun 25 07:53:51 BST 1998  Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml: add section on GtkCList widget, contributed
index c0adc681028507126976faa283a9444c505c3cb4..3882fc5a06806701253b97f3804dfaeb4cabd4b7 100644 (file)
@@ -1,3 +1,9 @@
+Thu Jun 25 10:50:34 1998  Stefan Jeske  <stefan@gtk.org>
+
+       * gdk/gdk.h gdk/gdkfont.c: Added functions gdk_text_height,
+       gdk_string_height, gdk_char_height to retrieve the exact
+       height of a text.
+
 Thu Jun 25 07:53:51 BST 1998  Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml: add section on GtkCList widget, contributed
index 7d1815340c910b1d6c26004e13f1c902a810a85b..27137720668c579cf730bb7adda091952f4ad8fc 100644 (file)
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -489,26 +489,33 @@ gint gdk_color_equal       (GdkColor      *colora,
 /* Fonts
  */
 GdkFont* gdk_font_load     (const gchar    *font_name);
-GdkFont* gdk_fontset_load   (gchar    *fontset_name);
-GdkFont* gdk_font_ref      (GdkFont  *font);
-void    gdk_font_unref     (GdkFont  *font);
+GdkFont* gdk_fontset_load   (gchar          *fontset_name);
+GdkFont* gdk_font_ref      (GdkFont        *font);
+void    gdk_font_unref     (GdkFont        *font);
 gint    gdk_font_id        (const GdkFont  *font);
 gint    gdk_font_equal     (const GdkFont  *fonta,
                             const GdkFont  *fontb);
-gint    gdk_string_width   (GdkFont  *font,
+gint    gdk_string_width   (GdkFont        *font,
                             const gchar    *string);
-gint    gdk_text_width     (GdkFont  *font,
+gint    gdk_text_width     (GdkFont        *font,
                             const gchar    *text,
-                            gint      text_length);
-gint    gdk_char_width     (GdkFont  *font,
-                            gchar     character);
-gint    gdk_string_measure (GdkFont  *font,
+                            gint            text_length);
+gint    gdk_char_width     (GdkFont        *font,
+                            gchar           character);
+gint    gdk_string_measure (GdkFont        *font,
                             const gchar    *string);
-gint    gdk_text_measure   (GdkFont  *font,
+gint    gdk_text_measure   (GdkFont        *font,
                             const gchar    *text,
-                            gint      text_length);
-gint    gdk_char_measure   (GdkFont  *font,
-                            gchar     character);
+                            gint            text_length);
+gint    gdk_char_measure   (GdkFont        *font,
+                            gchar           character);
+gint    gdk_string_height  (GdkFont        *font,
+                            const gchar    *string);
+gint    gdk_text_height    (GdkFont        *font,
+                            const gchar    *text,
+                            gint            text_length);
+gint    gdk_char_height    (GdkFont        *font,
+                            gchar           character);
 
 
 /* Drawing
index 352de2003f43c01551c4fbd34fb04baeafcf26a0..acc82f2b625be2a26b58f31ec7cee69196cc1391 100644 (file)
@@ -385,3 +385,71 @@ gdk_char_measure (GdkFont *font,
 
   return gdk_text_measure (font, &character, 1);
 }
+
+gint
+gdk_string_height (GdkFont     *font,
+                  const gchar *string)
+{
+  g_return_val_if_fail (font != NULL, -1);
+  g_return_val_if_fail (string != NULL, -1);
+
+  return gdk_text_height (font, string, strlen (string));
+}
+
+gint
+gdk_text_height (GdkFont     *font,
+                const gchar *text,
+                gint         text_length)
+{
+  GdkFontPrivate *private;
+  XCharStruct overall;
+  XFontStruct *xfont;
+  XFontSet    fontset;
+  XRectangle  ink, log;
+  int direction;
+  int font_ascent;
+  int font_descent;
+  gint height;
+
+  g_return_val_if_fail (font != NULL, -1);
+  g_return_val_if_fail (text != NULL, -1);
+
+  private = (GdkFontPrivate*) font;
+
+  switch (font->type)
+    {
+    case GDK_FONT_FONT:
+      xfont = (XFontStruct *) private->xfont;
+      if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
+       {
+         XTextExtents (xfont, text, text_length,
+                       &direction, &font_ascent, &font_descent,
+                       &overall);
+       }
+      else
+       {
+         XTextExtents16 (xfont, (XChar2b *) text, text_length / 2,
+                         &direction, &font_ascent, &font_descent,
+                         &overall);
+       }
+      height = overall.ascent + overall.descent;
+      break;
+    case GDK_FONT_FONTSET:
+      fontset = (XFontSet) private->xfont;
+      XmbTextExtents (fontset, text, text_length, &ink, &log);
+      height = log.height;
+      break;
+    default:
+      height = 0;
+    }
+  return height;
+}
+
+gint
+gdk_char_height (GdkFont *font,
+                gchar    character)
+{
+  g_return_val_if_fail (font != NULL, -1);
+
+  return gdk_text_height (font, &character, 1);
+}
index 352de2003f43c01551c4fbd34fb04baeafcf26a0..acc82f2b625be2a26b58f31ec7cee69196cc1391 100644 (file)
@@ -385,3 +385,71 @@ gdk_char_measure (GdkFont *font,
 
   return gdk_text_measure (font, &character, 1);
 }
+
+gint
+gdk_string_height (GdkFont     *font,
+                  const gchar *string)
+{
+  g_return_val_if_fail (font != NULL, -1);
+  g_return_val_if_fail (string != NULL, -1);
+
+  return gdk_text_height (font, string, strlen (string));
+}
+
+gint
+gdk_text_height (GdkFont     *font,
+                const gchar *text,
+                gint         text_length)
+{
+  GdkFontPrivate *private;
+  XCharStruct overall;
+  XFontStruct *xfont;
+  XFontSet    fontset;
+  XRectangle  ink, log;
+  int direction;
+  int font_ascent;
+  int font_descent;
+  gint height;
+
+  g_return_val_if_fail (font != NULL, -1);
+  g_return_val_if_fail (text != NULL, -1);
+
+  private = (GdkFontPrivate*) font;
+
+  switch (font->type)
+    {
+    case GDK_FONT_FONT:
+      xfont = (XFontStruct *) private->xfont;
+      if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
+       {
+         XTextExtents (xfont, text, text_length,
+                       &direction, &font_ascent, &font_descent,
+                       &overall);
+       }
+      else
+       {
+         XTextExtents16 (xfont, (XChar2b *) text, text_length / 2,
+                         &direction, &font_ascent, &font_descent,
+                         &overall);
+       }
+      height = overall.ascent + overall.descent;
+      break;
+    case GDK_FONT_FONTSET:
+      fontset = (XFontSet) private->xfont;
+      XmbTextExtents (fontset, text, text_length, &ink, &log);
+      height = log.height;
+      break;
+    default:
+      height = 0;
+    }
+  return height;
+}
+
+gint
+gdk_char_height (GdkFont *font,
+                gchar    character)
+{
+  g_return_val_if_fail (font != NULL, -1);
+
+  return gdk_text_height (font, &character, 1);
+}